概述
本文主要讲述如何在Tomcat中设置gzip压缩的方法。
详细信息
阿里云提醒您:
- 如果您对实例或数据有修改、变更等风险操作,务必注意实例的容灾、容错能力,确保数据安全。
- 如果您对实例(包括但不限于ECS、RDS)等进行配置与数据修改,建议提前创建快照或开启RDS日志备份等功能。
- 如果您在阿里云平台授权或者提交过登录账号、密码等安全信息,建议您及时修改。
配置方法
Tomcat5.0以后的版本是支持对输出内容进行压缩的,使用的是gzip压缩格式 。请您修改%TOMCAT_HOME%/conf/server.xml
文件,在文件中的以下段落添加注释部分的条目。
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" executor="tomcatThreadPool" URIEncoding="utf-8"
compression="on" #打开压缩功能
compressionMinSize="50" #启用压缩的输出内容大小,默认为2KB
noCompressionUserAgents="gozilla, traviata" #对于以下的浏览器,不启用压缩
compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain" /> #哪些资源类型需要压缩
功能测试
Tomcat是根据浏览器请求头中的accept-encoding
来判断浏览器是否支持压缩功能,如果这个值包含有gzip项,就表明浏览器支持gzip压缩内容的浏览。您可以用两种方法来验证压缩是否生效:
- 通过浏览器直接请求
通过浏览器访问启用压缩配置的服务器,然后通过抓包工具查看抓到的数据包。当您在数据报信息中查看到“gzip”字样的参数,即验证当前内容已压缩。 - 通过程序模拟请求
- 用HttpClient写一个简单的测试程序,以下是测试程序的内容。
public void testGzip() {
HttpClient httpClient = new HttpClient();
GetMethod getMethod = new GetMethod("http://localhost/admin.jsp");
try {
getMethod.addRequestHeader("accept-encoding", "gzip,deflate");
getMethod.addRequestHeader("user-agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; Alexa Toolbar; Maxthon 2.0)");
int result = httpClient.executeMethod(getMethod);
if (result == 200) {
System.out.println(getMethod.getResponseContentLength());
String html = getMethod.getResponseBodyAsString();
System.out.println(html);
System.out.println(html.getBytes().length);
}
} catch (HttpException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
getMethod.releaseConnection();
}
} - 执行这个程序,查看输出的内容。如果输出的是一些乱码,并且打印内容的长度远小于实际的长度,就说明配置已生效。
说明:当发现内容没有被压缩,您可以考虑调整compressionMinSize参数的大小,如果请求资源小于这个数值,则不会启用压缩功能。
- 用HttpClient写一个简单的测试程序,以下是测试程序的内容。
适用于
- 云服务器ECS
反馈
- 本页导读 (1)
文档反馈